Fork其他大神的github项目
fork别人的github项目，然后更改默认branch为主要活动branch

源项目默认的主branch基本都是空，为了伪装屏蔽

添加Github Actions
点击Actions

新建自己的actions

添加如下代码[1]

![微信图片_20230620055616](https://github.com/dlgt7/TVbox-interface/assets/102397160/cb514d9b-2cf1-427b-b7e1-46d5eb27faa3)


# #.github/workflows/sync.yml
name: Sync Fork

on:
  push: # push 时触发, 主要是为了测试配置有没有问题
  schedule:
    - cron: '* */3 * * *' # 每3小时触发, 对于一些更新不那么频繁的项目可以设置为每天一次, 低碳一点
jobs:
  repo-sync:
    runs-on: ubuntu-latest
    steps:
      - uses: TG908/fork-sync@v1.6.3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          owner: ZhaoUncle # fork 的上游仓库 user
          head: main # fork 的上游仓库 branch
          base: main # 本地仓库 branch
          
owner: 填写上游的项目作者名

head: 上游仓库 branch

base: 本地仓库 branch

提交action commit

坐等Github Actions自动更新

## 详解schedule cron 定时任务表达式

每天凌晨2点 0 0 2 * * ?和每天隔一小时 0 * */1 * * ?

例1：每隔5秒执行一次：*/5 * * * * ?

例2：每隔5分执行一次：0 */5 * * * ?

在26分、29分、33分执行一次：0 26,29,33 * * * ?

例3：每天半夜12点30分执行一次：0 30 0 * * ? （注意日期域为0不是24）

每天凌晨1点执行一次：0 0 1 * * ?

每天上午10：15执行一次： 0 15 10 ? * * 或 0 15 10 * * ? 或 0 15 10 * * ? *

每天中午十二点执行一次：0 0 12 * * ?

每天14点到14：59分，每1分钟执行一次：0 * 14 * * ?

每天14点到14：05分，每1分钟执行一次：0 0-5 14 * * ?

每天14点到14：55分，每5分钟执行一次：0 0/5 14 * * ?

每天14点到14：55分，和18点到18点55分，每5分钟执行一次：0 0/5 14,18 * * ?

每天18点执行一次：0 0 18 * * ?

每天18点、22点执行一次：0 0 18,22 * * ?

每天7点到23点，每整点执行一次：0 0 7-23 * * ?

每个整点执行一次：0 0 0/1 * * ?

(1) 标识符
从左到右用空格隔开分别是：秒 分 时 日 月 周 年(可省略)

第一个位置：Seconds 秒：区间 0-59 秒，代表一分钟内的秒数。

第二个位置：Minutes 分：区间 0-59 分，代表一小时内的分钟数。

第三个位置：Hours 时：区间 0-23 时，代表一天中的小时数。

第四个位置：Day of month 日：区间 1-31 (?根据每月有多少天来)，代表一月中的多少号。

第五个位置：Month 月：区间 1-12 ，代表一年中的月份。

第六个位置：Day of week 周：区间 1-7或者英文星期的缩写，代表星期几。

（注意：1 对应周日 SUN , 7 对应周六 SAT ，如此循环）

第七个位置：Year 年：区间1970-2099，代表具体年份，但是一般不用，可以直接不写。(为什么到了2099年就停了？)

补充：cron表达式

例1：@scheduled (cron="0 0 2 2 * ? *") 表示：每月二号凌晨两点执行。

例2：@scheduled (cron="15,20,40 15-20 2/5 L * ?") 表示：每月的最后一天的凌晨2点开始每隔5小时的第15分钟到第20分钟之间的每分钟的第15,20,40秒执行一次。

例3：@scheduled (cron="0 0 0 15W * ?") 表示：每月离15号最近的工作日。

例4：@scheduled (cron= "0 0 0 0 * 2#3 ") 表示：每月的第三个周一。

下面是网上找的表格，方便记忆

![QQ图片20230918160242](https://github.com/dlgt7/TVbox-interface/assets/102397160/a0929c25-19ef-4b77-8480-a8f516491454)


(2) 字符
描述：写在cron表达式的标识符位置用于表达特定意义的字符，如 例1 中的：0,2,*,？

阿拉伯数字：数值，出现在标识符位置的数字代表对应值，比如第一个2代表两点，第二个2代表二号

* ：通配，语义相当于每… 比如第五个位置的 *就表示每月都会执行(相当于1-12)

? ：忽略，语义相当于不管… 比如第六个位置的?就表示不管当前是周几就会执行。至于为什么会有这种用法，我觉得应该是因为它和其他的字符可能会冲突。如果用*的话表示周一到周日都会执行，此时其他语义就不明确了，所以如果用不上星期的话一般给它用一个?表示 not care。

/ ：间隔，语义相当于每隔… 比如例2中的第三个位置的2/5就表示从2点开始每隔五小时

- ：区间，语义相当于第…到…的每… 比如例2中的第二个位置的15-20就表示第15分钟到20分钟之间的每分钟

, ：枚举，语义相当于第…和… 比如例2中的第一个位置的15,20,40就表示第15秒、20秒和40秒

L ：最后(last)，语义相当于最后一个 比如例2中的第四个位置的L就表示最后一天

W ：工作日，字面意思，就是工作日 比如例3中的第四个位置的15W表示15号附近最近的工作日，如果15号刚好是工作日那就15号触发，如果15号是周六那就14号触发，如果15号是周日那就16号触发。前面不带数字就是所有匹配的工作日。

/ # ：周定位，语义相当于每月的第几个周几 比如例4中的第六个位置的2#3就表示第三个周一。

总结：害挺好玩的，就是星期错位用起来要相当注意，很容易出错。



